
<!DOCTYPE HTML>
<html lang="" >
    <head>
        <meta charset="UTF-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>BuildKit · GitBook</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="description" content="">
        <meta name="generator" content="GitBook 3.2.3">
        
        
        
    
    <link rel="stylesheet" href="../gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-search/search.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css">
                
            
        

    

    
        
    
        
    
        
    
        
    
        
    
        
    

        
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
    <link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">

    
    <link rel="next" href="buildx.html" />
    
    
    <link rel="prev" href="./" />
    

    </head>
    <body>
        
<div class="book">
    <div class="book-summary">
        
            
<div id="book-search-input" role="search">
    <input type="text" placeholder="Type to search" />
</div>

            
                <nav role="navigation">
                


<ul class="summary">
    
    

    

    
        
        
    
        <li class="chapter " data-level="1.1" data-path="../">
            
                <a href="../">
            
                    
                    前言
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2" data-path="../CHANGELOG.md">
            
                <span>
            
                    
                    修订记录
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3" data-path="../CONTRIBUTING.md">
            
                <span>
            
                    
                    如何贡献
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4" data-path="../introduction/">
            
                <a href="../introduction/">
            
                    
                    Docker 简介
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.1" data-path="../introduction/what.html">
            
                <a href="../introduction/what.html">
            
                    
                    什么是 Docker
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.2" data-path="../introduction/why.html">
            
                <a href="../introduction/why.html">
            
                    
                    为什么要用 Docker
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.5" data-path="../basic_concept/">
            
                <a href="../basic_concept/">
            
                    
                    基本概念
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.5.1" data-path="../basic_concept/image.html">
            
                <a href="../basic_concept/image.html">
            
                    
                    镜像
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.2" data-path="../basic_concept/container.html">
            
                <a href="../basic_concept/container.html">
            
                    
                    容器
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.3" data-path="../basic_concept/repository.html">
            
                <a href="../basic_concept/repository.html">
            
                    
                    仓库
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.6" data-path="../install/">
            
                <a href="../install/">
            
                    
                    安装 Docker
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.6.1" data-path="../install/ubuntu.html">
            
                <a href="../install/ubuntu.html">
            
                    
                    Ubuntu
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.2" data-path="../install/debian.html">
            
                <a href="../install/debian.html">
            
                    
                    Debian
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.3" data-path="../install/fedora.html">
            
                <a href="../install/fedora.html">
            
                    
                    Fedora
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.4" data-path="../install/centos.html">
            
                <a href="../install/centos.html">
            
                    
                    CentOS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.5" data-path="../install/raspberry-pi.html">
            
                <a href="../install/raspberry-pi.html">
            
                    
                    Raspberry Pi
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.6" data-path="../install/mac.html">
            
                <a href="../install/mac.html">
            
                    
                    macOS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.7" data-path="../install/windows.html">
            
                <a href="../install/windows.html">
            
                    
                    Windows 10
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.8" data-path="../install/mirror.html">
            
                <a href="../install/mirror.html">
            
                    
                    镜像加速器
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.9" data-path="../install/experimental.html">
            
                <a href="../install/experimental.html">
            
                    
                    开启实验特性
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.7" data-path="../image/">
            
                <a href="../image/">
            
                    
                    使用镜像
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.7.1" data-path="../image/pull.html">
            
                <a href="../image/pull.html">
            
                    
                    获取镜像
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.2" data-path="../image/list.html">
            
                <a href="../image/list.html">
            
                    
                    列出镜像
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.3" data-path="../image/rm.html">
            
                <a href="../image/rm.html">
            
                    
                    删除本地镜像
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.4" data-path="../image/commit.html">
            
                <a href="../image/commit.html">
            
                    
                    利用 commit 理解镜像构成
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.5" data-path="../image/build.html">
            
                <a href="../image/build.html">
            
                    
                    使用 Dockerfile 定制镜像
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6" data-path="../image/dockerfile/">
            
                <a href="../image/dockerfile/">
            
                    
                    Dockerfile 指令详解
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.7.6.1" data-path="../image/dockerfile/copy.html">
            
                <a href="../image/dockerfile/copy.html">
            
                    
                    COPY 复制文件
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6.2" data-path="../image/dockerfile/add.html">
            
                <a href="../image/dockerfile/add.html">
            
                    
                    ADD 更高级的复制文件
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6.3" data-path="../image/dockerfile/cmd.html">
            
                <a href="../image/dockerfile/cmd.html">
            
                    
                    CMD 容器启动命令
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6.4" data-path="../image/dockerfile/entrypoint.html">
            
                <a href="../image/dockerfile/entrypoint.html">
            
                    
                    ENTRYPOINT 入口点
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6.5" data-path="../image/dockerfile/env.html">
            
                <a href="../image/dockerfile/env.html">
            
                    
                    ENV 设置环境变量
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6.6" data-path="../image/dockerfile/arg.html">
            
                <a href="../image/dockerfile/arg.html">
            
                    
                    ARG 构建参数
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6.7" data-path="../image/dockerfile/volume.html">
            
                <a href="../image/dockerfile/volume.html">
            
                    
                    VOLUME 定义匿名卷
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6.8" data-path="../image/dockerfile/expose.html">
            
                <a href="../image/dockerfile/expose.html">
            
                    
                    EXPOSE 暴露端口
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6.9" data-path="../image/dockerfile/workdir.html">
            
                <a href="../image/dockerfile/workdir.html">
            
                    
                    WORKDIR 指定工作目录
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6.10" data-path="../image/dockerfile/user.html">
            
                <a href="../image/dockerfile/user.html">
            
                    
                    USER 指定当前用户
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6.11" data-path="../image/dockerfile/healthcheck.html">
            
                <a href="../image/dockerfile/healthcheck.html">
            
                    
                    HEALTHCHECK 健康检查
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6.12" data-path="../image/dockerfile/onbuild.html">
            
                <a href="../image/dockerfile/onbuild.html">
            
                    
                    ONBUILD 为他人作嫁衣裳
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6.13" data-path="../image/dockerfile/references.html">
            
                <a href="../image/dockerfile/references.html">
            
                    
                    参考文档
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.7.7" data-path="../image/multistage-builds/">
            
                <a href="../image/multistage-builds/">
            
                    
                    Dockerfile 多阶段构建
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.7.7.1" data-path="../image/multistage-builds/laravel.html">
            
                <a href="../image/multistage-builds/laravel.html">
            
                    
                    实战多阶段构建 Laravel 镜像
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.7.8" data-path="../image/manifest.html">
            
                <a href="../image/manifest.html">
            
                    
                    构建多种系统架构支持的 Docker 镜像
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.9" data-path="../image/other.html">
            
                <a href="../image/other.html">
            
                    
                    其它制作镜像的方式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.10" data-path="../image/internal.html">
            
                <a href="../image/internal.html">
            
                    
                    实现原理
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.8" data-path="../container/">
            
                <a href="../container/">
            
                    
                    操作容器
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.8.1" data-path="../container/run.html">
            
                <a href="../container/run.html">
            
                    
                    启动
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.8.2" data-path="../container/daemon.html">
            
                <a href="../container/daemon.html">
            
                    
                    守护态运行
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.8.3" data-path="../container/stop.html">
            
                <a href="../container/stop.html">
            
                    
                    终止
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.8.4" data-path="../container/attach_exec.html">
            
                <a href="../container/attach_exec.html">
            
                    
                    进入容器
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.8.5" data-path="../container/import_export.html">
            
                <a href="../container/import_export.html">
            
                    
                    导出和导入
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.8.6" data-path="../container/rm.html">
            
                <a href="../container/rm.html">
            
                    
                    删除
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.9" data-path="../repository/">
            
                <a href="../repository/">
            
                    
                    访问仓库
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.9.1" data-path="../repository/dockerhub.html">
            
                <a href="../repository/dockerhub.html">
            
                    
                    Docker Hub
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.9.2" data-path="../repository/registry.html">
            
                <a href="../repository/registry.html">
            
                    
                    私有仓库
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.9.3" data-path="../repository/registry_auth.html">
            
                <a href="../repository/registry_auth.html">
            
                    
                    私有仓库高级配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.9.4" data-path="../repository/nexus3_registry.html">
            
                <a href="../repository/nexus3_registry.html">
            
                    
                    Nexus 3
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.10" data-path="../data_management/">
            
                <a href="../data_management/">
            
                    
                    数据管理
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.10.1" data-path="../data_management/volume.html">
            
                <a href="../data_management/volume.html">
            
                    
                    数据卷
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.10.2" data-path="../data_management/bind-mounts.html">
            
                <a href="../data_management/bind-mounts.html">
            
                    
                    挂载主机目录
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.11" data-path="../network/">
            
                <a href="../network/">
            
                    
                    使用网络
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.11.1" data-path="../network/port_mapping.html">
            
                <a href="../network/port_mapping.html">
            
                    
                    外部访问容器
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.2" data-path="../network/linking.html">
            
                <a href="../network/linking.html">
            
                    
                    容器互联
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.3" data-path="../network/dns.html">
            
                <a href="../network/dns.html">
            
                    
                    配置 DNS
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.12" data-path="../advanced_network/">
            
                <a href="../advanced_network/">
            
                    
                    高级网络配置
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.12.1" data-path="../advanced_network/quick_guide.html">
            
                <a href="../advanced_network/quick_guide.html">
            
                    
                    快速配置指南
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.2" data-path="../advanced_network/access_control.html">
            
                <a href="../advanced_network/access_control.html">
            
                    
                    容器访问控制
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.3" data-path="../advanced_network/port_mapping.html">
            
                <a href="../advanced_network/port_mapping.html">
            
                    
                    端口映射实现
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.4" data-path="../advanced_network/docker0.html">
            
                <a href="../advanced_network/docker0.html">
            
                    
                    配置 docker0 网桥
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.5" data-path="../advanced_network/bridge.html">
            
                <a href="../advanced_network/bridge.html">
            
                    
                    自定义网桥
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.6" data-path="../advanced_network/example.html">
            
                <a href="../advanced_network/example.html">
            
                    
                    工具和示例
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.7" data-path="../advanced_network/config_file.html">
            
                <a href="../advanced_network/config_file.html">
            
                    
                    编辑网络配置文件
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.8" data-path="../advanced_network/ptp.html">
            
                <a href="../advanced_network/ptp.html">
            
                    
                    实例：创建一个点到点连接
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.13" data-path="./">
            
                <a href="./">
            
                    
                    Docker Buildx
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter active" data-level="1.13.1" data-path="buildkit.html">
            
                <a href="buildkit.html">
            
                    
                    BuildKit
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.13.2" data-path="buildx.html">
            
                <a href="buildx.html">
            
                    
                    使用 buildx 构建镜像
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.13.3" data-path="multi-arch-images.html">
            
                <a href="multi-arch-images.html">
            
                    
                    使用 buildx 构建多种系统架构支持的 Docker 镜像
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.14" data-path="../compose/">
            
                <a href="../compose/">
            
                    
                    Docker Compose
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.14.1" data-path="../compose/introduction.html">
            
                <a href="../compose/introduction.html">
            
                    
                    简介
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.14.2" data-path="../compose/install.html">
            
                <a href="../compose/install.html">
            
                    
                    安装与卸载
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.14.3" data-path="../compose/usage.html">
            
                <a href="../compose/usage.html">
            
                    
                    使用
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.14.4" data-path="../compose/commands.html">
            
                <a href="../compose/commands.html">
            
                    
                    命令说明
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.14.5" data-path="../compose/compose_file.html">
            
                <a href="../compose/compose_file.html">
            
                    
                    Compose 模板文件
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.14.6" data-path="../compose/django.html">
            
                <a href="../compose/django.html">
            
                    
                    实战 Django
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.14.7" data-path="../compose/rails.html">
            
                <a href="../compose/rails.html">
            
                    
                    实战 Rails
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.14.8" data-path="../compose/wordpress.html">
            
                <a href="../compose/wordpress.html">
            
                    
                    实战 WordPress
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.14.9" data-path="../compose/lnmp.html">
            
                <a href="../compose/lnmp.html">
            
                    
                    实战 LNMP
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.15" data-path="../swarm_mode/">
            
                <a href="../swarm_mode/">
            
                    
                    Swarm mode
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.15.1" data-path="../swarm_mode/overview.html">
            
                <a href="../swarm_mode/overview.html">
            
                    
                    基本概念
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.15.2" data-path="../swarm_mode/create.html">
            
                <a href="../swarm_mode/create.html">
            
                    
                    创建 Swarm 集群
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.15.3" data-path="../swarm_mode/deploy.html">
            
                <a href="../swarm_mode/deploy.html">
            
                    
                    部署服务
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.15.4" data-path="../swarm_mode/stack.html">
            
                <a href="../swarm_mode/stack.html">
            
                    
                    使用 compose 文件
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.15.5" data-path="../swarm_mode/secret.html">
            
                <a href="../swarm_mode/secret.html">
            
                    
                    管理密钥
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.15.6" data-path="../swarm_mode/config.html">
            
                <a href="../swarm_mode/config.html">
            
                    
                    管理配置信息
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.15.7" data-path="../swarm_mode/rolling_update.html">
            
                <a href="../swarm_mode/rolling_update.html">
            
                    
                    滚动升级
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.16" data-path="../security/">
            
                <a href="../security/">
            
                    
                    安全
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.16.1" data-path="../security/kernel_ns.html">
            
                <a href="../security/kernel_ns.html">
            
                    
                    内核命名空间
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.16.2" data-path="../security/control_group.html">
            
                <a href="../security/control_group.html">
            
                    
                    控制组
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.16.3" data-path="../security/daemon_sec.html">
            
                <a href="../security/daemon_sec.html">
            
                    
                    服务端防护
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.16.4" data-path="../security/kernel_capability.html">
            
                <a href="../security/kernel_capability.html">
            
                    
                    内核能力机制
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.16.5" data-path="../security/other_feature.html">
            
                <a href="../security/other_feature.html">
            
                    
                    其它安全特性
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.16.6" data-path="../security/summary.html">
            
                <a href="../security/summary.html">
            
                    
                    总结
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.17" data-path="../underly/">
            
                <a href="../underly/">
            
                    
                    底层实现
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.17.1" data-path="../underly/arch.html">
            
                <a href="../underly/arch.html">
            
                    
                    基本架构
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17.2" data-path="../underly/namespace.html">
            
                <a href="../underly/namespace.html">
            
                    
                    命名空间
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17.3" data-path="../underly/cgroups.html">
            
                <a href="../underly/cgroups.html">
            
                    
                    控制组
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17.4" data-path="../underly/ufs.html">
            
                <a href="../underly/ufs.html">
            
                    
                    联合文件系统
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17.5" data-path="../underly/container_format.html">
            
                <a href="../underly/container_format.html">
            
                    
                    容器格式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17.6" data-path="../underly/network.html">
            
                <a href="../underly/network.html">
            
                    
                    网络
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.18" data-path="../etcd/">
            
                <a href="../etcd/">
            
                    
                    Etcd 项目
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.18.1" data-path="../etcd/intro.html">
            
                <a href="../etcd/intro.html">
            
                    
                    简介
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.18.2" data-path="../etcd/install.html">
            
                <a href="../etcd/install.html">
            
                    
                    安装
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.18.3" data-path="../etcd/cluster.html">
            
                <a href="../etcd/cluster.html">
            
                    
                    集群
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.18.4" data-path="../etcd/etcdctl.html">
            
                <a href="../etcd/etcdctl.html">
            
                    
                    使用 etcdctl
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.19" data-path="../coreos/">
            
                <a href="../coreos/">
            
                    
                    Fedora CoreOS
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.19.1" data-path="../coreos/intro.html">
            
                <a href="../coreos/intro.html">
            
                    
                    简介
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.19.2" data-path="../coreos/install.html">
            
                <a href="../coreos/install.html">
            
                    
                    安装
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.20" data-path="../kubernetes/">
            
                <a href="../kubernetes/">
            
                    
                    Kubernetes - 开源容器编排引擎
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.20.1" data-path="../kubernetes/intro.html">
            
                <a href="../kubernetes/intro.html">
            
                    
                    简介
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.20.2" data-path="../kubernetes/concepts.html">
            
                <a href="../kubernetes/concepts.html">
            
                    
                    基本概念
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.20.3" data-path="../kubernetes/design.html">
            
                <a href="../kubernetes/design.html">
            
                    
                    架构设计
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.21" data-path="../kubernetes/setup/">
            
                <a href="../kubernetes/setup/">
            
                    
                    部署 Kubernetes
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.21.1" data-path="../kubernetes/setup/kubeadm.html">
            
                <a href="../kubernetes/setup/kubeadm.html">
            
                    
                    使用 kubeadm 部署 kubernetes
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.21.2" data-path="../kubernetes/setup/docker-desktop.html">
            
                <a href="../kubernetes/setup/docker-desktop.html">
            
                    
                    在 Docker Desktop 使用
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.21.3" data-path="../kubernetes/setup/systemd.html">
            
                <a href="../kubernetes/setup/systemd.html">
            
                    
                    一步步部署 kubernetes 集群
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.21.4" data-path="../kubernetes/setup/dashboard.html">
            
                <a href="../kubernetes/setup/dashboard.html">
            
                    
                    部署 Dashboard
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.22" data-path="../kubernetes/kubectl/">
            
                <a href="../kubernetes/kubectl/">
            
                    
                    Kubernetes 命令行 kubectl
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.23" data-path="../cloud/">
            
                <a href="../cloud/">
            
                    
                    容器与云计算
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.23.1" data-path="../cloud/intro.html">
            
                <a href="../cloud/intro.html">
            
                    
                    简介
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.23.2" data-path="../cloud/tencentCloud.html">
            
                <a href="../cloud/tencentCloud.html">
            
                    
                    腾讯云
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.23.3" data-path="../cloud/alicloud.html">
            
                <a href="../cloud/alicloud.html">
            
                    
                    阿里云
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.23.4" data-path="../cloud/aws.html">
            
                <a href="../cloud/aws.html">
            
                    
                    亚马逊云
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.23.5" data-path="../cloud/summary.html">
            
                <a href="../cloud/summary.html">
            
                    
                    小结
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.24" data-path="../cases/os/">
            
                <a href="../cases/os/">
            
                    
                    实战案例 - 操作系统
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.24.1" data-path="../cases/os/busybox.html">
            
                <a href="../cases/os/busybox.html">
            
                    
                    Busybox
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.24.2" data-path="../cases/os/alpine.html">
            
                <a href="../cases/os/alpine.html">
            
                    
                    Alpine
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.24.3" data-path="../cases/os/debian.html">
            
                <a href="../cases/os/debian.html">
            
                    
                    Debian Ubuntu
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.24.4" data-path="../cases/os/centos.html">
            
                <a href="../cases/os/centos.html">
            
                    
                    CentOS Fedora
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.24.5" data-path="../cases/os/summary.html">
            
                <a href="../cases/os/summary.html">
            
                    
                    本章小结
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.25" data-path="../cases/ci/">
            
                <a href="../cases/ci/">
            
                    
                    实战案例 - CI/CD
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.25.1" data-path="../cases/ci/actions/">
            
                <a href="../cases/ci/actions/">
            
                    
                    GitHub Actions
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.25.2" data-path="../cases/ci/drone/">
            
                <a href="../cases/ci/drone/">
            
                    
                    Drone
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.25.2.1" data-path="../cases/ci/drone/install.html">
            
                <a href="../cases/ci/drone/install.html">
            
                    
                    部署 Drone
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.25.3" data-path="../cases/ci/travis/">
            
                <a href="../cases/ci/travis/">
            
                    
                    Travis CI
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.26" data-path="../IDE/">
            
                <a href="../IDE/">
            
                    
                    在 IDE 中使用 Docker
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.26.1" data-path="../IDE/vsCode.html">
            
                <a href="../IDE/vsCode.html">
            
                    
                    VS Code
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.27" data-path="../opensource/">
            
                <a href="../opensource/">
            
                    
                    Docker 开源项目
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.27.1" data-path="../opensource/linuxkit.html">
            
                <a href="../opensource/linuxkit.html">
            
                    
                    LinuxKit
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.28" data-path="../podman/">
            
                <a href="../podman/">
            
                    
                    podman - 下一代 Linux 容器工具
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29" data-path="../appendix/">
            
                <a href="../appendix/">
            
                    
                    附录
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.29.1" data-path="../appendix/faq/">
            
                <a href="../appendix/faq/">
            
                    
                    附录一：常见问题总结
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29.2" data-path="../appendix/repo/">
            
                <a href="../appendix/repo/">
            
                    
                    附录二：热门镜像介绍
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.29.2.1" data-path="../appendix/repo/ubuntu.html">
            
                <a href="../appendix/repo/ubuntu.html">
            
                    
                    Ubuntu
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29.2.2" data-path="../appendix/repo/centos.html">
            
                <a href="../appendix/repo/centos.html">
            
                    
                    CentOS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29.2.3" data-path="../appendix/repo/nginx.html">
            
                <a href="../appendix/repo/nginx.html">
            
                    
                    Nginx
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29.2.4" data-path="../appendix/repo/php.html">
            
                <a href="../appendix/repo/php.html">
            
                    
                    PHP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29.2.5" data-path="../appendix/repo/nodejs.html">
            
                <a href="../appendix/repo/nodejs.html">
            
                    
                    Node.js
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29.2.6" data-path="../appendix/repo/mysql.html">
            
                <a href="../appendix/repo/mysql.html">
            
                    
                    MySQL
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29.2.7" data-path="../appendix/repo/wordpress.html">
            
                <a href="../appendix/repo/wordpress.html">
            
                    
                    WordPress
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29.2.8" data-path="../appendix/repo/mongodb.html">
            
                <a href="../appendix/repo/mongodb.html">
            
                    
                    MongoDB
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29.2.9" data-path="../appendix/repo/redis.html">
            
                <a href="../appendix/repo/redis.html">
            
                    
                    Redis
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.29.3" data-path="../appendix/command/">
            
                <a href="../appendix/command/">
            
                    
                    附录三：Docker 命令查询
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.29.3.1" data-path="../appendix/command/docker.html">
            
                <a href="../appendix/command/docker.html">
            
                    
                    客户端命令 - docker
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29.3.2" data-path="../appendix/command/dockerd.html">
            
                <a href="../appendix/command/dockerd.html">
            
                    
                    服务端命令 - dockerd
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.29.4" data-path="../appendix/best_practices.html">
            
                <a href="../appendix/best_practices.html">
            
                    
                    附录四：Dockerfile 最佳实践
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29.5" data-path="../appendix/debug.html">
            
                <a href="../appendix/debug.html">
            
                    
                    附录五：如何调试 Docker
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.29.6" data-path="../appendix/resources.html">
            
                <a href="../appendix/resources.html">
            
                    
                    附录六：资源链接
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.30" data-path="../archive/">
            
                <a href="../archive/">
            
                    
                    归档
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.30.1" data-path="../mesos/">
            
                <a href="../mesos/">
            
                    
                    Mesos - 优秀的集群资源调度平台
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.30.1.1" data-path="../mesos/intro.html">
            
                <a href="../mesos/intro.html">
            
                    
                    Mesos 简介
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.30.1.2" data-path="../mesos/installation.html">
            
                <a href="../mesos/installation.html">
            
                    
                    安装与使用
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.30.1.3" data-path="../mesos/architecture.html">
            
                <a href="../mesos/architecture.html">
            
                    
                    原理与架构
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.30.1.4" data-path="../mesos/configuration.html">
            
                <a href="../mesos/configuration.html">
            
                    
                    Mesos 配置项解析
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.30.1.5" data-path="../mesos/monitor.html">
            
                <a href="../mesos/monitor.html">
            
                    
                    日志与监控
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.30.1.6" data-path="../mesos/framework.html">
            
                <a href="../mesos/framework.html">
            
                    
                    常见应用框架
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.30.1.7" data-path="../mesos/summary.html">
            
                <a href="../mesos/summary.html">
            
                    
                    本章小结
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.30.2" data-path="../machine/">
            
                <a href="../machine/">
            
                    
                    Docker Machine
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.30.2.1" data-path="../machine/install.html">
            
                <a href="../machine/install.html">
            
                    
                    安装
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.30.2.2" data-path="../machine/usage.html">
            
                <a href="../machine/usage.html">
            
                    
                    使用
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.30.3" data-path="../swarm/">
            
                <a href="../swarm/">
            
                    
                    Docker Swarm
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
            Published with GitBook
        </a>
    </li>
</ul>


                </nav>
            
        
    </div>

    <div class="book-body">
        
            <div class="body-inner">
                
                    

<div class="book-header" role="navigation">
    

    <!-- Title -->
    <h1>
        <i class="fa fa-circle-o-notch fa-spin"></i>
        <a href=".." >BuildKit</a>
    </h1>
</div>




                    <div class="page-wrapper" tabindex="-1" role="main">
                        <div class="page-inner">
                            
<div id="book-search-results">
    <div class="search-noresults">
    
                                <section class="normal markdown-section">
                                
                                <h1 id="&#x4F7F;&#x7528;-buildkit-&#x6784;&#x5EFA;&#x955C;&#x50CF;">&#x4F7F;&#x7528; <code>BuildKit</code> &#x6784;&#x5EFA;&#x955C;&#x50CF;</h1>
<p><strong>BuildKit</strong> &#x662F;&#x4E0B;&#x4E00;&#x4EE3;&#x7684;&#x955C;&#x50CF;&#x6784;&#x5EFA;&#x7EC4;&#x4EF6;&#xFF0C;&#x5728; <a href="https://github.com/moby/buildkit" target="_blank">https://github.com/moby/buildkit</a> &#x5F00;&#x6E90;&#x3002;</p>
<p><strong>&#x6CE8;&#x610F;&#xFF1A;&#x5982;&#x679C;&#x60A8;&#x7684;&#x955C;&#x50CF;&#x6784;&#x5EFA;&#x4F7F;&#x7528;&#x7684;&#x662F;&#x4E91;&#x670D;&#x52A1;&#x5546;&#x63D0;&#x4F9B;&#x7684;&#x955C;&#x50CF;&#x6784;&#x5EFA;&#x670D;&#x52A1;&#xFF08;Docker Hub &#x81EA;&#x52A8;&#x6784;&#x5EFA;&#x3001;&#x817E;&#x8BAF;&#x4E91;&#x5BB9;&#x5668;&#x670D;&#x52A1;&#x3001;&#x963F;&#x91CC;&#x4E91;&#x5BB9;&#x5668;&#x670D;&#x52A1;&#x7B49;&#xFF09;&#xFF0C;&#x7531;&#x4E8E;&#x4E0A;&#x8FF0;&#x670D;&#x52A1;&#x63D0;&#x4F9B;&#x5546;&#x7684; Docker &#x7248;&#x672C;&#x4F4E;&#x4E8E; 18.09&#xFF0C;BuildKit &#x65E0;&#x6CD5;&#x4F7F;&#x7528;&#xFF0C;&#x5C06;&#x9020;&#x6210;&#x955C;&#x50CF;&#x6784;&#x5EFA;&#x5931;&#x8D25;&#x3002;&#x5EFA;&#x8BAE;&#x4F7F;&#x7528; BuildKit &#x6784;&#x5EFA;&#x955C;&#x50CF;&#x65F6;&#x4F7F;&#x7528;&#x4E00;&#x4E2A;&#x65B0;&#x7684; Dockerfile &#x6587;&#x4EF6;&#xFF08;&#x4F8B;&#x5982; Dockerfile.buildkit&#xFF09;</strong></p>
<p><strong>&#x6CE8;&#x610F;&#xFF1A;docker-compose build &#x547D;&#x4EE4;&#x6682;&#x65F6;&#x4E0D;&#x652F;&#x6301; BuildKit</strong></p>
<h2 id="dockerfile-&#x65B0;&#x589E;&#x6307;&#x4EE4;&#x8BE6;&#x89E3;"><code>Dockerfile</code> &#x65B0;&#x589E;&#x6307;&#x4EE4;&#x8BE6;&#x89E3;</h2>
<p>&#x542F;&#x7528; <code>BuildKit</code> &#x4E4B;&#x540E;&#xFF0C;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x4E0B;&#x9762;&#x51E0;&#x4E2A;&#x65B0;&#x7684; <code>Dockerfile</code> &#x6307;&#x4EE4;&#x6765;&#x52A0;&#x5FEB;&#x955C;&#x50CF;&#x6784;&#x5EFA;&#x3002;</p>
<h3 id="run---mounttypecache"><code>RUN --mount=type=cache</code></h3>
<p>&#x76EE;&#x524D;&#xFF0C;&#x51E0;&#x4E4E;&#x6240;&#x6709;&#x7684;&#x7A0B;&#x5E8F;&#x90FD;&#x4F1A;&#x4F7F;&#x7528;&#x4F9D;&#x8D56;&#x7BA1;&#x7406;&#x5DE5;&#x5177;&#xFF0C;&#x4F8B;&#x5982; <code>Go</code> &#x4E2D;&#x7684; <code>go mod</code>&#x3001;<code>Node.js</code> &#x4E2D;&#x7684; <code>npm</code> &#x7B49;&#x7B49;&#xFF0C;&#x5F53;&#x6211;&#x4EEC;&#x6784;&#x5EFA;&#x4E00;&#x4E2A;&#x955C;&#x50CF;&#x65F6;&#xFF0C;&#x5F80;&#x5F80;&#x4F1A;&#x91CD;&#x590D;&#x7684;&#x4ECE;&#x4E92;&#x8054;&#x7F51;&#x4E2D;&#x83B7;&#x53D6;&#x4F9D;&#x8D56;&#x5305;&#xFF0C;&#x96BE;&#x4EE5;&#x7F13;&#x5B58;&#xFF0C;&#x5927;&#x5927;&#x964D;&#x4F4E;&#x4E86;&#x955C;&#x50CF;&#x7684;&#x6784;&#x5EFA;&#x6548;&#x7387;&#x3002;</p>
<p>&#x4F8B;&#x5982;&#x4E00;&#x4E2A;&#x524D;&#x7AEF;&#x5DE5;&#x7A0B;&#x9700;&#x8981;&#x7528;&#x5230; <code>npm</code>&#xFF1A;</p>
<pre><code class="lang-docker"><span class="hljs-keyword">FROM</span> node:alpine as builder

<span class="hljs-keyword">WORKDIR</span> <span class="bash">/app
</span>
<span class="hljs-keyword">COPY</span> <span class="bash">package.json /app/
</span>
<span class="hljs-keyword">RUN</span> <span class="bash">npm i --registry=https://registry.npm.taobao.org \
        &amp;&amp; rm -rf ~/.npm
</span>
<span class="hljs-keyword">COPY</span> <span class="bash">src /app/src
</span>
<span class="hljs-keyword">RUN</span> <span class="bash">npm run build
</span>
<span class="hljs-keyword">FROM</span> nginx:alpine

<span class="hljs-keyword">COPY</span> <span class="bash">--from=builder /app/dist /app/dist
</span></code></pre>
<p>&#x4F7F;&#x7528;&#x591A;&#x9636;&#x6BB5;&#x6784;&#x5EFA;&#xFF0C;&#x6784;&#x5EFA;&#x7684;&#x955C;&#x50CF;&#x4E2D;&#x53EA;&#x5305;&#x542B;&#x4E86;&#x76EE;&#x6807;&#x6587;&#x4EF6;&#x5939; <code>dist</code>&#xFF0C;&#x4F46;&#x4ECD;&#x7136;&#x5B58;&#x5728;&#x4E00;&#x4E9B;&#x95EE;&#x9898;&#xFF0C;&#x5F53; <code>package.json</code> &#x6587;&#x4EF6;&#x53D8;&#x52A8;&#x65F6;&#xFF0C;<code>RUN npm i &amp;&amp; rm -rf ~/.npm</code> &#x8FD9;&#x4E00;&#x5C42;&#x4F1A;&#x91CD;&#x65B0;&#x6267;&#x884C;&#xFF0C;&#x53D8;&#x66F4;&#x591A;&#x6B21;&#x540E;&#xFF0C;&#x751F;&#x6210;&#x4E86;&#x5927;&#x91CF;&#x7684;&#x4E2D;&#x95F4;&#x5C42;&#x955C;&#x50CF;&#x3002;</p>
<p>&#x4E3A;&#x89E3;&#x51B3;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#xFF0C;&#x8FDB;&#x4E00;&#x6B65;&#x7684;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x8BBE;&#x60F3;&#x4E00;&#x4E2A;&#x7C7B;&#x4F3C; <strong>&#x6570;&#x636E;&#x5377;</strong> &#x7684;&#x529F;&#x80FD;&#xFF0C;&#x5728;&#x955C;&#x50CF;&#x6784;&#x5EFA;&#x65F6;&#x628A; <code>node_modules</code> &#x6587;&#x4EF6;&#x5939;&#x6302;&#x8F7D;&#x4E0A;&#x53BB;&#xFF0C;&#x5728;&#x6784;&#x5EFA;&#x5B8C;&#x6210;&#x540E;&#xFF0C;&#x8FD9;&#x4E2A; <code>node_modules</code> &#x6587;&#x4EF6;&#x5939;&#x4F1A;&#x81EA;&#x52A8;&#x5378;&#x8F7D;&#xFF0C;&#x5B9E;&#x9645;&#x7684;&#x955C;&#x50CF;&#x4E2D;&#x5E76;&#x4E0D;&#x5305;&#x542B; <code>node_modules</code> &#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#x5939;&#xFF0C;&#x8FD9;&#x6837;&#x6211;&#x4EEC;&#x5C31;&#x7701;&#x53BB;&#x4E86;&#x6BCF;&#x6B21;&#x83B7;&#x53D6;&#x4F9D;&#x8D56;&#x7684;&#x65F6;&#x95F4;&#xFF0C;&#x5927;&#x5927;&#x589E;&#x52A0;&#x4E86;&#x955C;&#x50CF;&#x6784;&#x5EFA;&#x6548;&#x7387;&#xFF0C;&#x540C;&#x65F6;&#x4E5F;&#x907F;&#x514D;&#x4E86;&#x751F;&#x6210;&#x4E86;&#x5927;&#x91CF;&#x7684;&#x4E2D;&#x95F4;&#x5C42;&#x955C;&#x50CF;&#x3002;</p>
<p><code>BuildKit</code> &#x63D0;&#x4F9B;&#x4E86; <code>RUN --mount=type=cache</code> &#x6307;&#x4EE4;&#xFF0C;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x4E0A;&#x8FB9;&#x7684;&#x8BBE;&#x60F3;&#x3002;</p>
<pre><code class="lang-docker"><span class="hljs-comment"># syntax = docker/dockerfile:experimental</span>
<span class="hljs-keyword">FROM</span> node:alpine as builder

<span class="hljs-keyword">WORKDIR</span> <span class="bash">/app
</span>
<span class="hljs-keyword">COPY</span> <span class="bash">package.json /app/
</span>
<span class="hljs-keyword">RUN</span> <span class="bash">--mount=<span class="hljs-built_in">type</span>=cache,target=/app/node_modules,id=my_app_npm_module,sharing=locked \
    --mount=<span class="hljs-built_in">type</span>=cache,target=/root/.npm,id=npm_cache \
        npm i --registry=https://registry.npm.taobao.org
</span>
<span class="hljs-keyword">COPY</span> <span class="bash">src /app/src
</span>
<span class="hljs-keyword">RUN</span> <span class="bash">--mount=<span class="hljs-built_in">type</span>=cache,target=/app/node_modules,id=my_app_npm_module,sharing=locked \
<span class="hljs-comment"># --mount=type=cache,target=/app/dist,id=my_app_dist,sharing=locked \</span>
        npm run build
</span>
<span class="hljs-keyword">FROM</span> nginx:alpine

<span class="hljs-comment"># COPY --from=builder /app/dist /app/dist</span>

<span class="hljs-comment"># &#x4E3A;&#x4E86;&#x66F4;&#x76F4;&#x89C2;&#x7684;&#x8BF4;&#x660E; from &#x548C; source &#x6307;&#x4EE4;&#xFF0C;&#x8FD9;&#x91CC;&#x4F7F;&#x7528; RUN &#x6307;&#x4EE4;</span>
<span class="hljs-keyword">RUN</span> <span class="bash">--mount=<span class="hljs-built_in">type</span>=cache,target=/tmp/dist,from=builder,<span class="hljs-built_in">source</span>=/app/dist \
    <span class="hljs-comment"># --mount=type=cache,target/tmp/dist,from=my_app_dist,sharing=locked \</span>
    mkdir -p /app/dist &amp;&amp; cp -r /tmp/dist/* /app/dist
</span></code></pre>
<p><strong>&#x7531;&#x4E8E; <code>BuildKit</code> &#x4E3A;&#x5B9E;&#x9A8C;&#x7279;&#x6027;&#xFF0C;&#x6BCF;&#x4E2A; <code>Dockerfile</code> &#x6587;&#x4EF6;&#x5F00;&#x5934;&#x90FD;&#x5FC5;&#x987B;&#x52A0;&#x4E0A;&#x5982;&#x4E0B;&#x6307;&#x4EE4;</strong></p>
<pre><code class="lang-docker"><span class="hljs-comment"># syntax = docker/dockerfile:experimental</span>
</code></pre>
<p>&#x7B2C;&#x4E00;&#x4E2A; <code>RUN</code> &#x6307;&#x4EE4;&#x6267;&#x884C;&#x540E;&#xFF0C;<code>id</code> &#x4E3A; <code>my_app_npm_module</code> &#x7684;&#x7F13;&#x5B58;&#x6587;&#x4EF6;&#x5939;&#x6302;&#x8F7D;&#x5230;&#x4E86; <code>/app/node_modules</code> &#x6587;&#x4EF6;&#x5939;&#x4E2D;&#x3002;&#x591A;&#x6B21;&#x6267;&#x884C;&#x4E5F;&#x4E0D;&#x4F1A;&#x4EA7;&#x751F;&#x591A;&#x4E2A;&#x4E2D;&#x95F4;&#x5C42;&#x955C;&#x50CF;&#x3002;</p>
<p>&#x7B2C;&#x4E8C;&#x4E2A; <code>RUN</code> &#x6307;&#x4EE4;&#x6267;&#x884C;&#x65F6;&#x9700;&#x8981;&#x7528;&#x5230; <code>node_modules</code> &#x6587;&#x4EF6;&#x5939;&#xFF0C;<code>node_modules</code> &#x5DF2;&#x7ECF;&#x6302;&#x8F7D;&#xFF0C;&#x547D;&#x4EE4;&#x4E5F;&#x53EF;&#x4EE5;&#x6B63;&#x786E;&#x6267;&#x884C;&#x3002;</p>
<p>&#x7B2C;&#x4E09;&#x4E2A; <code>RUN</code> &#x6307;&#x4EE4;&#x5C06;&#x4E0A;&#x4E00;&#x9636;&#x6BB5;&#x4EA7;&#x751F;&#x7684;&#x6587;&#x4EF6;&#x590D;&#x5236;&#x5230;&#x6307;&#x5B9A;&#x4F4D;&#x7F6E;&#xFF0C;<code>from</code> &#x6307;&#x660E;&#x7F13;&#x5B58;&#x7684;&#x6765;&#x6E90;&#xFF0C;&#x8FD9;&#x91CC; <code>builder</code> &#x8868;&#x793A;&#x7F13;&#x5B58;&#x6765;&#x6E90;&#x4E8E;&#x6784;&#x5EFA;&#x7684;&#x7B2C;&#x4E00;&#x9636;&#x6BB5;&#xFF0C;<code>source</code> &#x6307;&#x660E;&#x7F13;&#x5B58;&#x6765;&#x6E90;&#x7684;&#x6587;&#x4EF6;&#x5939;&#x3002;</p>
<p>&#x4E0A;&#x9762;&#x7684; <code>Dockerfile</code> &#x4E2D; <code>--mount=type=cache,...</code> &#x4E2D;&#x6307;&#x4EE4;&#x4F5C;&#x7528;&#x5982;&#x4E0B;&#xFF1A;</p>
<table>
<thead>
<tr>
<th>Option</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>id</code></td>
<td><code>id</code> &#x8BBE;&#x7F6E;&#x4E00;&#x4E2A;&#x6807;&#x5FD7;&#xFF0C;&#x4EE5;&#x4FBF;&#x533A;&#x5206;&#x7F13;&#x5B58;&#x3002;</td>
</tr>
<tr>
<td><code>target</code> (&#x5FC5;&#x586B;&#x9879;)</td>
<td>&#x7F13;&#x5B58;&#x7684;&#x6302;&#x8F7D;&#x76EE;&#x6807;&#x6587;&#x4EF6;&#x5939;&#x3002;</td>
</tr>
<tr>
<td><code>ro</code>,<code>readonly</code></td>
<td>&#x53EA;&#x8BFB;&#xFF0C;&#x7F13;&#x5B58;&#x6587;&#x4EF6;&#x5939;&#x4E0D;&#x80FD;&#x88AB;&#x5199;&#x5165;&#x3002;</td>
</tr>
<tr>
<td><code>sharing</code></td>
<td>&#x6709; <code>shared</code> <code>private</code> <code>locked</code> &#x503C;&#x53EF;&#x4F9B;&#x9009;&#x62E9;&#x3002;<code>sharing</code> &#x8BBE;&#x7F6E;&#x5F53;&#x4E00;&#x4E2A;&#x7F13;&#x5B58;&#x88AB;&#x591A;&#x6B21;&#x4F7F;&#x7528;&#x65F6;&#x7684;&#x8868;&#x73B0;&#xFF0C;&#x7531;&#x4E8E; <code>BuildKit</code> &#x652F;&#x6301;&#x5E76;&#x884C;&#x6784;&#x5EFA;&#xFF0C;&#x5F53;&#x591A;&#x4E2A;&#x6B65;&#x9AA4;&#x4F7F;&#x7528;&#x540C;&#x4E00;&#x7F13;&#x5B58;&#x65F6;&#xFF08;&#x540C;&#x4E00; <code>id</code>&#xFF09;&#x4F1A;&#x53D1;&#x751F;&#x51B2;&#x7A81;&#x3002;<code>shared</code> &#x8868;&#x793A;&#x591A;&#x4E2A;&#x6B65;&#x9AA4;&#x53EF;&#x4EE5;&#x540C;&#x65F6;&#x8BFB;&#x5199;&#xFF0C;<code>private</code> &#x8868;&#x793A;&#x5F53;&#x591A;&#x4E2A;&#x6B65;&#x9AA4;&#x4F7F;&#x7528;&#x540C;&#x4E00;&#x7F13;&#x5B58;&#x65F6;&#xFF0C;&#x6BCF;&#x4E2A;&#x6B65;&#x9AA4;&#x4F7F;&#x7528;&#x4E0D;&#x540C;&#x7684;&#x7F13;&#x5B58;&#xFF0C;<code>locked</code> &#x8868;&#x793A;&#x5F53;&#x4E00;&#x4E2A;&#x6B65;&#x9AA4;&#x5B8C;&#x6210;&#x91CA;&#x653E;&#x7F13;&#x5B58;&#x540E;&#xFF0C;&#x540E;&#x4E00;&#x4E2A;&#x6B65;&#x9AA4;&#x624D;&#x80FD;&#x7EE7;&#x7EED;&#x4F7F;&#x7528;&#x8BE5;&#x7F13;&#x5B58;&#x3002;</td>
</tr>
<tr>
<td><code>from</code></td>
<td>&#x7F13;&#x5B58;&#x6765;&#x6E90;&#xFF08;&#x6784;&#x5EFA;&#x9636;&#x6BB5;&#xFF09;&#xFF0C;&#x4E0D;&#x586B;&#x5199;&#x65F6;&#x4E3A;&#x7A7A;&#x6587;&#x4EF6;&#x5939;&#x3002;</td>
</tr>
<tr>
<td><code>source</code></td>
<td>&#x6765;&#x6E90;&#x7684;&#x6587;&#x4EF6;&#x5939;&#x8DEF;&#x5F84;&#x3002;</td>
</tr>
</tbody>
</table>
<h3 id="run---mounttypebind"><code>RUN --mount=type=bind</code></h3>
<p>&#x8BE5;&#x6307;&#x4EE4;&#x53EF;&#x4EE5;&#x5C06;&#x4E00;&#x4E2A;&#x955C;&#x50CF;&#xFF08;&#x6216;&#x4E0A;&#x4E00;&#x6784;&#x5EFA;&#x9636;&#x6BB5;&#xFF09;&#x7684;&#x6587;&#x4EF6;&#x6302;&#x8F7D;&#x5230;&#x6307;&#x5B9A;&#x4F4D;&#x7F6E;&#x3002;</p>
<pre><code class="lang-docker"><span class="hljs-comment"># syntax = docker/dockerfile:experimental</span>
<span class="hljs-keyword">RUN</span> <span class="bash">--mount=<span class="hljs-built_in">type</span>=<span class="hljs-built_in">bind</span>,from=php:alpine,<span class="hljs-built_in">source</span>=/usr/<span class="hljs-built_in">local</span>/bin/docker-php-entrypoint,target=/docker-php-entrypoint \
        cat /docker-php-entrypoint
</span></code></pre>
<h3 id="run---mounttypetmpfs"><code>RUN --mount=type=tmpfs</code></h3>
<p>&#x8BE5;&#x6307;&#x4EE4;&#x53EF;&#x4EE5;&#x5C06;&#x4E00;&#x4E2A; <code>tmpfs</code> &#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x6302;&#x8F7D;&#x5230;&#x6307;&#x5B9A;&#x4F4D;&#x7F6E;&#x3002;</p>
<pre><code class="lang-docker"><span class="hljs-comment"># syntax = docker/dockerfile:experimental</span>
<span class="hljs-keyword">RUN</span> <span class="bash">--mount=<span class="hljs-built_in">type</span>=tmpfs,target=/temp \
        mount | grep /temp
</span></code></pre>
<h3 id="run---mounttypesecret"><code>RUN --mount=type=secret</code></h3>
<p>&#x8BE5;&#x6307;&#x4EE4;&#x53EF;&#x4EE5;&#x5C06;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;(&#x4F8B;&#x5982;&#x5BC6;&#x94A5;)&#x6302;&#x8F7D;&#x5230;&#x6307;&#x5B9A;&#x4F4D;&#x7F6E;&#x3002;</p>
<pre><code class="lang-docker"><span class="hljs-comment"># syntax = docker/dockerfile:experimental</span>
<span class="hljs-keyword">RUN</span> <span class="bash">--mount=<span class="hljs-built_in">type</span>=secret,id=aws,target=/root/.aws/credentials \
        cat /root/.aws/credentials
</span></code></pre>
<pre><code class="lang-bash">$ docker build -t <span class="hljs-built_in">test</span> --secret id=aws,src=<span class="hljs-variable">$HOME</span>/.aws/credentials .
</code></pre>
<h3 id="run---mounttypessh"><code>RUN --mount=type=ssh</code></h3>
<p>&#x8BE5;&#x6307;&#x4EE4;&#x53EF;&#x4EE5;&#x6302;&#x8F7D; <code>ssh</code> &#x5BC6;&#x94A5;&#x3002;</p>
<pre><code class="lang-docker"><span class="hljs-comment"># syntax = docker/dockerfile:experimental</span>
<span class="hljs-keyword">FROM</span> alpine
<span class="hljs-keyword">RUN</span> <span class="bash">apk add --no-cache openssh-client
</span><span class="hljs-keyword">RUN</span> <span class="bash">mkdir -p -m 0700 ~/.ssh &amp;&amp; ssh-keyscan gitlab.com &gt;&gt; ~/.ssh/known_hosts
</span><span class="hljs-keyword">RUN</span> <span class="bash">--mount=<span class="hljs-built_in">type</span>=ssh ssh git@gitlab.com | tee /hello
</span></code></pre>
<pre><code class="lang-bash">$ <span class="hljs-built_in">eval</span> $(ssh-agent)
$ ssh-add ~/.ssh/id_rsa
(Input your passphrase here)
$ docker build -t <span class="hljs-built_in">test</span> --ssh default=<span class="hljs-variable">$SSH_AUTH_SOCK</span> .
</code></pre>
<h2 id="&#x5B98;&#x65B9;&#x6587;&#x6863;">&#x5B98;&#x65B9;&#x6587;&#x6863;</h2>
<ul>
<li><a href="https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md" target="_blank">https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md</a></li>
</ul>

                                
                                </section>
                            
    </div>
    <div class="search-results">
        <div class="has-results">
            
            <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
            <ul class="search-results-list"></ul>
            
        </div>
        <div class="no-results">
            
            <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
            
        </div>
    </div>
</div>

                        </div>
                    </div>
                
            </div>

            
                
                <a href="./" class="navigation navigation-prev " aria-label="Previous page: Docker Buildx">
                    <i class="fa fa-angle-left"></i>
                </a>
                
                
                <a href="buildx.html" class="navigation navigation-next " aria-label="Next page: 使用 buildx 构建镜像">
                    <i class="fa fa-angle-right"></i>
                </a>
                
            
        
    </div>

    <script>
        var gitbook = gitbook || [];
        gitbook.push(function() {
            gitbook.page.hasChanged({"page":{"title":"BuildKit","level":"1.13.1","depth":2,"next":{"title":"使用 buildx 构建镜像","level":"1.13.2","depth":2,"path":"buildx/buildx.md","ref":"buildx/buildx.md","articles":[]},"previous":{"title":"Docker Buildx","level":"1.13","depth":1,"path":"buildx/README.md","ref":"buildx/README.md","articles":[{"title":"BuildKit","level":"1.13.1","depth":2,"path":"buildx/buildkit.md","ref":"buildx/buildkit.md","articles":[]},{"title":"使用 buildx 构建镜像","level":"1.13.2","depth":2,"path":"buildx/buildx.md","ref":"buildx/buildx.md","articles":[]},{"title":"使用 buildx 构建多种系统架构支持的 Docker 镜像","level":"1.13.3","depth":2,"path":"buildx/multi-arch-images.md","ref":"buildx/multi-arch-images.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":["livereload"],"pluginsConfig":{"livereload":{},"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"buildx/buildkit.md","mtime":"2020-04-12T12:29:28.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2020-04-23T10:39:04.870Z"},"basePath":"..","book":{"language":""}});
        });
    </script>
</div>

        
    <script src="../gitbook/gitbook.js"></script>
    <script src="../gitbook/theme.js"></script>
    
        
        <script src="../gitbook/gitbook-plugin-livereload/plugin.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-search/search-engine.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-search/search.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-sharing/buttons.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
        
    

    </body>
</html>

